iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Vibe Coding

不會 Code,也要 Vibe :(((系列 第 20 篇

想到下一步,才知道現在要怎麼做

  • 分享至 

  • xImage
  •  

既然卡都可以抽了,那是不是可以開始做抽卡收藏?

原本想把主畫面上的 ☆ 拿來做收藏,讓使用者可以看到自己曾經抽過哪些卡片。
但真的準備往下做的時候,才發現好像不能直接開始。

這些卡現在其實都只是一張圖片

前面為了測試抽卡功能,我只先放了三張卡片。
但原本《時間就是金錢》其實已經做過大約 50 張梗圖卡和生活挑戰卡,所以今天第一件事,就是先把原本的卡牌全部整理進:

image/cards/

一開始想得很簡單。

如果這些卡片都只是拿來隨機抽,好像只要讓程式知道「總共有幾張卡」,就可以直接從裡面隨機選一張。
例如總共有 50 張,就設定:

totalCards = 50;

如果圖片的檔名本身有固定規則,例如 card1.png、card2.png,就可以透過隨機產生 1~50 的數字,再組出對應的圖片路徑,之後如果又新增新的卡片,也只要把數字改掉就好了。
但想到之後準備做的功能,才發現這個方法沒有想像中方便。

如果有不同功能,就不能只知道有幾張卡

目前的卡牌主要分成兩種:

梗圖卡和生活挑戰卡。

現在抽到哪一種其實沒有太大的差別,都是把對應的圖片顯示出來。
但如果開始製作生活挑戰卡的其他功能,兩種卡片抽出來後要做的事情就不一樣了。

抽到生活挑戰卡 → 實際完成挑戰 → 上傳照片 → 留下紀錄

這時候程式就不能只知道:

「我抽到了第 20 張圖片。」

還要知道:

「我抽到的這張,到底是梗圖卡還是生活挑戰卡?」

所以今天先沒有繼續往收藏功能做,而是決定先把原本的卡牌資料整理好。

先讓每張卡有自己的資料

原本單純只有圖片路徑的卡片,這次開始替它們整理一些基本資料。
目前先保留三個:

{
    id: ...,
    type: ...,
    image: ...
}

id 用來辨認是哪一張卡片。
image 對應實際的卡片圖片。
type 則用來區分卡片種類。

meme代表梗圖卡。

challenge代表生活挑戰卡。

不過今天還沒有開始做生活挑戰卡的完成、照片紀錄等功能。
現在的 type 只是先把每張卡片的身分標記好,讓之後真的開始做不同功能時,程式已經知道現在抽到的是哪一種類型。

卡片有分類,但抽法沒有變

雖然現在多了 meme 和 challenge 兩種類型,但目前的抽卡規則沒有改變。
梗圖卡和生活挑戰卡還是全部放在同一個抽卡池裡:

所有卡片 → 同一個 cardList → 每張卡等機率隨機

不會先決定要抽梗圖卡還是生活挑戰卡,也沒有另外設定稀有度或不同機率。
真正改變的是,程式現在不只知道卡片的圖片,也開始知道每張卡片各自的身分。

原來下一步要做什麼,也會影響現在怎麼整理

如果只考慮目前的抽卡功能,把所有卡片當成圖片其實就已經夠用了。
但當我開始想到下一步要做收藏,再往後還有生活挑戰的完成與紀錄,才發現現在怎麼整理這些卡片,也會影響之後的功能要怎麼接。

原本我比較常想的是:

「這個功能現在能不能做出來?」

但這次反而多想了一步:

「我接下來還想拿這些資料做什麼?」

後來才發現,這其實已經不只是把圖片放進抽卡池,而是開始思考卡牌的資料應該怎麼整理。
原本每張卡對程式來說可能只是一個圖片路徑,但當它開始有自己的 id、type 和 image,後面的收藏、分類和生活挑戰功能才比較有東西可以接著使用。
也因為先想到後面要做的事情,才決定今天先不急著繼續加功能,而是先把卡牌的資料整理好。
原來下一步要做什麼,也會反過來影響現在應該怎麼做。


上一篇
能抽卡了,還不算真的完成
下一篇
把主畫面的 ☆ 變成收藏入口
系列文
不會 Code,也要 Vibe :((( 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言